chapter 2

为了避免这类问题,网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则,以确保发送方机器将它的内部表示转换成网络标准,而接收方机器则将网络标准转换为它的内部表示。

little/big-endian -> network standard -> big/little-endian

C 格式化指令“%.2x”表明整数必须用至少两个数字的十六进制格式输出。

剩下的大多在 sys I 中学的比较多了,略过。


![](/img/user/CSAPP/note/attachments/chapter 2.png)

  1. F
  2. T
  3. F
  4. T
  5. F
  6. T
  7. T

"Two's-complement and unsigned addition have the same bit-level behavior, and they are commutative",也就是说二者的存储形式&运算形式并没有改变;而在比较时,都会强制转换为 unsigned 进行比较,所以一样了。

答案加粗表示需要关注。


![](/img/user/CSAPP/note/attachments/chapter 2-1.png)

  1. T
  2. F float 能够正确表示的整数范围小于 int,超过了会乱表示
  3. F
  4. T
  5. T
  6. T
  7. T float/double 可没有溢出,只有 +/
  8. F float 表示的精度不是连续的,如果 f+d 的数 float 不能够精确表示而 round 了,那么就为 false 了。

关于在 IEEE-754 标准下,如何判断 float 和 double 类型所能表示的数的范围,可见 Chatgpt-4o 的回答;需要注意的是,float/double 能够表示的整数范围仅有 224/252